As software and other computer code is written, edited, and updated, properties may be introduced or removed from the software or other computer code. For example, when revising software there is always a possibility for unintended consequences, which may include defects, errors, or bugs. Also, for example, malicious code may introduce an undesirable property to software. Further, software properties can be desired features, such as fixes, changes, or improvements to the code. While some features can improve software, a defect can impair code from performing in a desired way, resulting in minor problems or catastrophic failures. As the size of code grows, the ability to locate the introduction or removal of a particular software property becomes more difficult. Likewise, as the number of versions and revisions of code increases, the ability to locate the introduction or removal of a particular software property becomes all the more difficult. For example, Linux has approximately ten thousand software changes between individual releases. Thus, defect location may be particularly onerous. Each and every software change could be a potential source of introduction of a defect. With increased possibility for software defects, it has become increasingly important to provide effective ways to locate the introduction of these defects. Isolating and fixing software defects, through history revision testing, takes time and computing resources. As the length of code grows, each history revision test takes more time. As the number of versions of software grows, there are more versions which need to be tested to locate a defect, or any other property, such as a fix which is desired to be applied elsewhere or to other code. Testing for software properties can often require significant computing resources and takes a significant amount of time. Bisection is one approach to locating software properties through history revision testing. For example, to locate a software defect, or a software fix, given two points in a project history (e.g., good and bad), bisection utilizes a binary search to find a defect when it is first introduced into the project. Finding a defect or malicious code can fix the problem; likewise, finding a fix may address a new problem elsewhere in the software or in other code. However, if the number of versions is large, and testing each version takes a long time, this process can be a significant drain on computing resources.